Some communication systems allow the user of a device, such as a personal computer or smart phone, to conduct voice or video calls over a packet-based computer network such as the Internet. Such communication systems include voice or video over internet protocol (VoIP) systems. These systems are beneficial to the user as they are often of significantly lower cost than conventional fixed line or mobile cellular networks. This may particularly be the case for long-distance communication. To use a VoIP system, the user installs and executes client software on their device. The client software sets up the VoIP connections as well as providing other functions such as registration and authentication. In addition to voice communication, the client may also set up connections for other communication media such as instant messaging (“IM”), SMS messaging, file transfer and voicemail.
Communications systems employing VoIP, or similar protocols are subject to many factors which may adversely affect call quality. For example, data packets may be lost (perhaps due to poor network conditions) when communication data is transmitted across the network, thereby affecting call quality.
User devices connected over a network may communicate data over logical communications channels which can be set up by client software on the devices. These logical channels may be affected by variable network conditions. Whenever the need to switch a logical communications channel is detected (e.g. if the logical communications channel is no longer operational or available), the user device switches to the next logical channel in a list of logical channels. However, if the next logical channel in the list is not operational or available, then this can lead to a disruption or termination in the data communication—particularly if there are no other available or operational logical channels in the list of logical channels. There is therefore a need to provide seamless and disruption-free streaming of data in variable network conditions.